from dataclasses import dataclass
from uuid import UUID

from src.domain.common.exceptions import AppException


@dataclass
class UserIsDeleted(AppException):
    """
    Ошибка об том, что пользователь удален
    """

    user_id: UUID

    @property
    def message(self) -> str:
        return f'The user with "{self.user_id}" id is deleted'


class AvatarIsDeleted(AppException):
    """
    Ошибка об том, что аватар удален
    """

    @property
    def message(self) -> str:
        return "User hasn't avatar"


@dataclass
class InvalidAvatarType(AppException):
    """
    Ошибка о невалидном типе аватара
    """

    file_type: str

    @property
    def message(self) -> str:
        return f"Unsupported file type {self.file_type}"
